﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DataAccessComponents
{
    /// <summary>
    /// Klasa zawierająca pełne dane o kliencie tzn. informacje z tabeli "Klient" i "Adres"
    /// </summary>
    public class KlientAdres
    {
        /// <summary>
        /// Zmienna zawierająca id_klienta
        /// </summary>        
        private int id_klient;

        public int Id_klient
        {
            get { return this.id_klient; }
            set { this.id_klient = value; }
        }

        /// <summary>
        /// Zmienna zawierająca date urodzenia klienta
        /// </summary>
        private DateTime data_urodzenia;

        public DateTime Data_urodzenia
        {
            get { return data_urodzenia; }
            set { data_urodzenia = value; }
        }

        /// <summary>
        /// Zmienna zawierająca imie klienta
        /// </summary>
        private string imie;

        public string Imie
        {
            get { return this.imie; }
            set { this.imie = value; }
        }

        /// <summary>
        /// Zmienna zawierająca nazwisko klienta
        /// </summary>
        private string nazwisko;

        public string Nazwisko
        {
            get { return this.nazwisko; }
            set { this.nazwisko = value; }
        }

        /// <summary>
        /// Zmienna zawierająca plec klienta
        /// </summary>
        private string plec;

        public string Plec
        {
            get { return this.plec; }
            set { this.plec = value; }
        }

        /// <summary>
        /// Zmienna zawierająca numer dowodu osobistego klienta
        /// </summary>
        private string nr_dowodu;

        public string Nr_dowodu
        {
            get { return this.nr_dowodu; }
            set { this.nr_dowodu = value; }
        }

        /// <summary>
        /// Zmienna zawierająca numer telefonu stacjonarnego klienta
        /// </summary>
        private string tel_stacjonarny;

        public string Tel_stacjonarny
        {
            get { return this.tel_stacjonarny; }
            set { this.tel_stacjonarny = value; }
        }

        /// <summary>
        /// Zmienna zawierając numer telefonu komórkowego klienta
        /// </summary>
        private string tel_komorkowy;

        public string Tel_komorkowy
        {
            get { return this.tel_komorkowy; }
            set { this.tel_komorkowy = value; }
        }
        
        /// <summary>
        /// Zmienna zawierająca informacje o zezwoleniu na wysyłanie SMS-ów reklamowych do klienta
        /// </summary>
        private bool zezwolenieSMS;

        public bool ZezwolenieSMS
        {
            get { return this.zezwolenieSMS; }
            set { this.zezwolenieSMS = value; }
        }

        /// <summary>
        /// Zmienna zawierająca informacje o zezwoleniu na wysyłanie EMAIL reklamowych do klienta
        /// </summary>
        private bool zezwolenieEMAIL;

        public bool ZezwolenieEMAIL
        {
            get { return this.zezwolenieEMAIL; }
            set { this.zezwolenieEMAIL = value; }
        }

        /// <summary>
        /// Zmienna zawierająca email klienta
        /// </summary>
        private string email;

        public string Email
        {
            get { return email; }
            set { email = value; }
        }

        /// <summary>
        /// Zmienna zawierająca id_adres klienta
        /// </summary>
        private int id_adres;

        public int Id_adres
        {
            get { return this.id_adres; }
            set { this.id_adres = value; }
        }

        /// <summary>
        /// Zmienna zawierająca ulice zamieszkania klienta
        /// </summary>
        private string ulica;

        public string Ulica
        {
            get { return this.ulica; }
            set { this.ulica = value; }
        }

        /// <summary>
        /// Zmienna zawierająca numer domu klienta
        /// </summary>
        private string nr_domu;

        public string Nr_domu
        {
            get { return this.nr_domu; }
            set { this.nr_domu = value; }
        }

        /// <summary>
        /// Zmienna zawierająca kod pocztowy klienta
        /// </summary>
        private string kod_pocztowy;

        public string Kod_pocztowy
        {
            get { return this.kod_pocztowy; }
            set { this.kod_pocztowy = value; }
        }

        /// <summary>
        /// Zmienna zawierająca wojewodztwo zamieszkania klienta
        /// </summary>
        private string wojewodztwo;

        public string Wojewodztwo
        {
            get { return this.wojewodztwo; }
            set { this.wojewodztwo = value; }
        }

        /// <summary>
        /// Zmienna zawierająca kraj zamieszkania klienta
        /// </summary>
        private string kraj;

        public string Kraj
        {
            get { return this.kraj; }
            set { this.kraj = value; }
        }

        /// <summary>
        /// Zmienna zawierająca miasto zamieszkania klienta
        /// </summary>
        private string miasto;

        public string Miasto
        {
            get { return this.miasto; }
            set { this.miasto = value; }
        }

        /// <summary>
        /// Pesel klienta
        /// </summary>
        private string pesel;

        public string Pesel
        {
            get { return this.pesel; }
            set { this.pesel = value; }
        }

        /// <summary>
        /// Numer paszportu
        /// </summary>
        private string nr_paszportu;

        public string Nr_paszportu
        {
            get { return this.nr_paszportu; }
            set { this.nr_paszportu = value; }
        }

        /// <summary>
        /// Data wydaniea paszportu
        /// </summary>
        private DateTime wydanie_paszportu;

        public DateTime Wydanie_paszportu
        {
            get { return this.wydanie_paszportu; }
            set { this.wydanie_paszportu = value; }
        }

        /// <summary>
        /// Numer klienta nadrzędnego, klientem podrzednym jest osoba która wyjezdza razem osoba zamawiającą
        /// </summary>
        private int klient_nadrzedny;

        public int Klient_nadrzedny
        {
            get { return this.klient_nadrzedny; }
            set { this.klient_nadrzedny = value; }
        }

        /// <summary>
        /// Konstruktor tworzący obiekt KlientAdres
        /// </summary>
        /// <param name="idk">Id klienta</param>
        /// <param name="im">Imię klienta</param>
        /// <param name="naz">Nazwisko klienta</param>
        /// <param name="pl">Płeć klienta</param>
        /// <param name="nrdw">Nr dowodu klienta</param>
        /// <param name="tels">Telefon stacjonarny</param>
        /// <param name="telk">Telefon komorkowy</param>
        /// <param name="zezSMS">Zezwolenie na wysyłanie sms</param>
        /// <param name="zezEM">Zezwolenie na wysyłanie email</param>
        /// <param name="e">Email </param>
        /// <param name="ida">Id adresu klienta</param>
        /// <param name="uli">Ulica</param>
        /// <param name="nrdo">Nr domu</param>
        /// <param name="kp">Kod pocztowy</param>
        /// <param name="woj">Województwo</param>
        /// <param name="kr">Kraj</param>
        /// <param name="mi">Miasto</param>
        /// <param neme="data_u">Data urodzenia</param>
        /// <param name="pesel">Nr PESEL</param>
        /// <param name="nr_paszportu">Nr paszportu klienta</param>
        /// <param name="wydanie_paszportu">Data wydania paszportu klienta</param>
        /// <param name="klient_nad">Nr klienta nadrzednego</param>

        public KlientAdres(int idk, string im, string naz, string pl,
            string nrdw, string tels, string telk, bool zezSMS, bool zezEM,
            string e, int ida, string uli, string nrdo, string kp, string woj, string kr, string mi, DateTime data_u, string pesel, string nr_paszportu, DateTime wydanie_paszportu, int klient_nad)
        {
            this.id_klient = idk;
            this.imie = im;
            this.nazwisko = naz;
            this.plec = pl;
            this.nr_dowodu = nrdw;
            this.tel_stacjonarny = tels;
            this.tel_komorkowy = telk;
            this.zezwolenieSMS = zezSMS;
            this.zezwolenieEMAIL = zezEM;
            this.email = e;
            this.id_adres = ida;
            this.ulica = uli;
            this.nr_domu = nrdo;
            this.kod_pocztowy = kp;
            this.wojewodztwo = woj;
            this.kraj = kr;
            this.miasto = mi;
            this.data_urodzenia = data_u;
            this.pesel = pesel;
            this.nr_paszportu = nr_paszportu;
            this.wydanie_paszportu = wydanie_paszportu;
            this.klient_nadrzedny = klient_nad;
        }

        public KlientAdres()
            : this(0,"","","","","","",false,false,"",0,"","","","","","",new DateTime(1900,1,1),"","",new DateTime(1900,1,1),0)
        {
        }
    }
}
